package com.amiu.shiro;

import org.apache.shiro.crypto.hash.SimpleHash;

/**
 * 本类可以统一管理密码的加密算法和加密次数
 * 本类将在ShiroConfig中配置为Bean，这个Bean可以作为本项目通用的加密解密标准
 * @author amiu
 * @version createtime：2017-10-11 下午5:17:17
 */
public class PasswordHashHelper {

	private String algorithmName ;
	private int hashIterations;
	
	public String getAlgorithmName() {
		return algorithmName;
	}
	/**
	 * 设置加密算法
	 * @param algorithmName
	 */
	public void setAlgorithmName(String algorithmName) {
		this.algorithmName = algorithmName;
	}
	public int getHashIterations() {
		return hashIterations;
	}
	/**
	 * 设置加密次数
	 * @param hashIterations
	 */
	public void setHashIterations(int hashIterations) {
		this.hashIterations = hashIterations;
	}
	
	public static String encryptPassword(String algorithmName,int hashIterations,String password,String salt){
        /*调用org.apache.shiro.crypto.hash.SimpleHash.SimpleHash(String algorithmName, Object source, Object salt, int hashIterations)
         * 构造方法实现盐值加密  String algorithmName 为加密算法 支持md5 base64 等*/
        SimpleHash sh = new SimpleHash(algorithmName, password, salt, hashIterations);
        //打印加盐结果
        return sh.toHex();
	}
	/**
	 * 生成加盐密码
	 * @param password 密码
	 * @param salt 盐
	 * @return 加盐密码
	 */
	public String encryptPassword(String password,String salt){
        /*调用org.apache.shiro.crypto.hash.SimpleHash.SimpleHash(String algorithmName, Object source, Object salt, int hashIterations)
         * 构造方法实现盐值加密  String algorithmName 为加密算法 支持md5 base64 等*/
        SimpleHash sh = new SimpleHash(algorithmName, password, salt, hashIterations);
        //打印加盐结果
        return sh.toHex();
	}
}
